﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using RESTScrum.Dominio;
using System.Data.SqlClient;

namespace RESTScrum.Persistencia
{
    public class MaterialDAO
    {
        public Material Crear(Material materialACrear)
        {
            Material materialCreado = null;
            string sql = "INSERT INTO material values (@cod, @nom, @est)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", materialACrear.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", materialACrear.Nombre));
                    com.Parameters.Add(new SqlParameter("@est", materialACrear.Estado));
                    com.ExecuteNonQuery();
                }
            }
            materialCreado = Obtener(materialACrear.Codigo);
            return materialCreado;
        }

        public Material Obtener(string codigo)
        {
            Material materialEncontrado = null;
            string sql = "SELECT * FROM material WHERE codigo=@cod and estado='A'";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            materialEncontrado = new Material()
                            {
                                Codigo = (string)resultado["Codigo"],
                                Nombre = (string)resultado["Nombre"],
                                Estado = (string)resultado["Estado"]
                            };
                        }
                    }
                }

            }
            return materialEncontrado;
        }

        public Material Modificar(Material materialAModificar)
        {
            Material materialModificado = null;
            string sql = "UPDATE material SET nombre=@nom WHERE codigo=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", materialAModificar.Codigo));
                    com.Parameters.Add(new SqlParameter("@nom", materialAModificar.Nombre));
                    com.ExecuteNonQuery();
                }
            }
            materialModificado = Obtener(materialAModificar.Codigo);
            return materialModificado;
        }

        public void Eliminar(string codigo)
        {
            //Alumno alumnoModificado = null;
            string sql = "UPDATE material SET estado='X' WHERE codigo=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    com.ExecuteNonQuery();
                }
            }
            //alumnoModificado = Obtener(alumnoAModificar.Codigo);
            //return alumnoModificado;
        }

        public List<Material> ListarTodos()
        {
            Material materialEncontrado = null;
            List<Material> lista = new List<Material>();
            string sql = "select * from material where estado='A'";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            materialEncontrado = new Material()
                            {
                                Codigo = (string)resultado["Codigo"],
                                Nombre = (string)resultado["Nombre"],
                                Estado = (string)resultado["Estado"]
                            };

                            lista.Add(materialEncontrado);

                        }
                    }
                }
            }
            return lista;
        }

    }
}